package functional.lambda;

/**
 * @ClassName RecursiveFactorial
 * @PackageName functional
 * @projectName myThread
 * @Description 
 * @Author games
 * @Date 2025/8/26 上午10:10
 * @Version 1.0
 */
public class RecursiveFactorial {
    /**
     * 递归函数是一个自我调用的函数。可以编写递归的 Lambda 表达式，但需要注意：递归方法必须是实例变量或静态变量，否则会出现编译时错误。 我们将为每个案例创建一个示例。
     */
    static IntCall fact;
    public static void main(String[] args) {
        fact = n -> n == 0 ? 1 : n * fact.call(n - 1);
        for(int i = 0; i <= 10; i++)
            System.out.println(fact.call(i));
    }

    @FunctionalInterface
    interface IntCall {
        int call(int n);
    }
}